/**判断当前是否有剩余时间，有的话就执行，没有的话这个任务就等下一个时间片。  （如果单任务还是很耗时，只能对任务切片，再用这个函数） */
const run = (task, callback) => {

    requestIdleCallback((d) => {
        console.log(d.timeRemaining());
        if (d.timeRemaining() > 0) {
            task()
            callback()
        } else {
            run(task, callback)
        }
    })
}


/**任务调度 - 运行一个耗时任务
 * - 不让页面卡顿，且兼容多浏览器
 * - 将会连续调用本函数多次 
 * - 原理：判断当前是否有剩余时间，有的话就执行，没有的话这个任务就等下一个时间片。
 */
export const runTask = (task) => {
    return new Promise((res) => {
        run(task, res)
    })
}